home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
v7n13.arc
/
MERGE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1988-05-18
|
3KB
|
104 lines
/* merge.c
* DESCRIPTION: merges a 'c' source file with an asm file
*/
#include <stdio.h>
#define LINEBUFFER 200 /* length of input line */
#define NAMESIZE 80 /* DOS file/path length */
FILE *p_to_c, *p_to_asm, *p_to_mer; /* declare file pointers */
char line_buffer[LINEBUFFER]; /* line buffer */
/* file name buffers */
char file_c[NAMESIZE], file_asm[NAMESIZE], file_mer[NAMESIZE];
main(argc,argv)
int argc;
char *argv[];
{
int line_count, run_count = 0;
if (argc != 2)
help_me(); /* print the usage message */
strcpy(file_c,argv[1]); /* setup the .C filename */
strcat(file_c,".c");
if(!(p_to_c = fopen(file_c,"r"))) /* open the .C file */
file_error(file_c);
strcpy(file_asm,argv[1]); /* setup the .ASM filename */
strcat(file_asm,".asm");
if(!(p_to_asm = fopen(file_asm,"r"))) /* open the .ASM file */
file_error(file_asm);
strcpy(file_mer,argv[1]); /* setup the .MER filename */
strcat(file_mer,".mer");
if(!(p_to_mer = fopen(file_mer,"w"))) /* open the .MER file */
file_error(file_mer);
/* read each line of the .ASM file */
while (fgets(line_buffer,LINEBUFFER,p_to_asm) )
{
if(strncmp(line_buffer,"; Line",6))/* if "; Line" not found */
{
fputs(line_buffer,p_to_mer); /* write it to merge file */
continue; /* get next line */
}
/* "; Line" was found */
line_count = atoi( &line_buffer[7] ); /* generate a line count */
if(run_count < line_count) /* if backlog in .C file */
for( ; run_count < line_count; run_count++)
write_merge_line(); /* write the lines and catch up */
else
{
write_merge_line(); /* write corresponding C line */
run_count++;
}
}
fclose(p_to_c); /* close all files */
fclose(p_to_asm);
fclose(p_to_mer);
}
/* write_merge_line()
* reads a line from the C source, and writes it out preceded by
* a ';'
*/
write_merge_line()
{
fgets(line_buffer,LINEBUFFER,p_to_c); /* get .C file line */
fputs("; ",p_to_mer); /* write ';' to merge file */
fputs(line_buffer,p_to_mer); /* put .C line after it */
}
/* help_me
* DESCRIPTION: prints out the title and usage
*/
help_me()
{
printf("MERGE: a program to merge a 'c' source file and an ASM file\n");
printf("USAGE: merge filename \n");
printf("where filename is the name of the files to merge\n");
printf("Do not type in the period or extension.\n");
exit(0);
}
/* file_error
* DESCRIPTION: prints out error message and name of the
* file that could not be opened
*/
file_error(name)
char *name;
{
printf("MERGE: ERROR IN OPENING FILE: %s \n",name);
exit(0);
}